package com.atstudent.gmall.product.rpc;

import com.atstudent.gmall.common.result.Result;
import com.atstudent.gmall.common.result.ResultCodeEnum;
import com.atstudent.gmall.product.biz.SkuBizService;
import com.atstudent.gmall.product.entity.SkuInfo;
import com.atstudent.gmall.product.entity.SpuSaleAttr;
import com.atstudent.gmall.product.vo.AttrValueConcatVo;
import com.atstudent.gmall.product.vo.CategoryView;
import com.atstudent.gmall.product.vo.SkuDetailVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * service-product远程服务接口
 * @Author 薛有朋
 * @CreatDate 2024/12/1 21:02
 **/
@RestController
@RequestMapping(value = "/api/inner/product")
public class SkuController {

    @Autowired
    private SkuBizService skuBizService;

    /**
     * 查询1,2,3级分类id和name-通过skuid
     * @Author 薛有朋
     * @Date 2024/12/1 21:06
     **/
    @GetMapping(value = "/findCategoryViewBySkuId/{skuId}")
    public Result<CategoryView> findCategoryViewBySkuId(@PathVariable(value = "skuId") Long skuId){
        CategoryView categoryView = skuBizService.findCategoryViewBySkuId(skuId);
        return Result.ok(categoryView);
    }

    /**
     * 查询skuInfo和对应的imgList-通过skuid
     * @Author 薛有朋
     * @Date 2024/12/2 20:32
     **/
    @GetMapping(value = "/findSkuInfoAndImageBySkuId/{skuId}")
    public Result<SkuInfo> findSkuInfoAndImageBySkuId(@PathVariable(value = "skuId") Long skuId){
        SkuInfo skuInfoAndImg = skuBizService.findSkuInfoAndImageBySkuId(skuId);
        return Result.ok(skuInfoAndImg);
    }

    /**
     * 查询sku价格-通过skuid
     * @Author 薛有朋
     * @Date 2024/12/2 20:55
     **/
    @GetMapping(value = "/findSkuInfoBySkuId/{skuId}")
    public Result<SkuInfo> findSkuInfoBySkuId(@PathVariable(value = "skuId")Long skuId) {
        SkuInfo skuInfo = skuBizService.findSkuInfoBySkuId(skuId) ;
        return Result.ok(skuInfo);
    }

    /**
     * 查询销售属性和销售属性值-通过skuid
     * @Author 薛有朋
     * @Date 2024/12/2 21:37
     **/
    @GetMapping(value = "/findSpuSalAttrBySkuId/{skuId}")
    public Result<List<SpuSaleAttr>> findSpuSalAttrBySkuId(@PathVariable(value = "skuId")Long skuId) {
        List<SpuSaleAttr> spuSaleAttrList = skuBizService.findSpuSalAttrBySkuId(skuId) ;
        return Result.ok(spuSaleAttrList) ;
    }

    /**
     * 查询该sku所对应的所有sku的销售属性值的组合
     * @Author 薛有朋
     * @Date 2024/12/3 22:14
     **/
    @GetMapping(value = "/findSkuAttrValueConcatBySkuId/{skuId}")
    public Result<List<AttrValueConcatVo>> findSkuAttrValueConcatBySkuId(@PathVariable(value = "skuId")Long skuId){
        List<AttrValueConcatVo> attrValueConcatVos = skuBizService.findSkuAttrValueConcatBySkuId(skuId);
        return Result.ok(attrValueConcatVos) ;
    }

    /**
     * 五合一接口
     * @Author 薛有朋
     * @Date 2024/12/5 17:26
     **/
    @GetMapping(value = "/findSkuDetailVo/{skuId}")
    public Result<SkuDetailVo> findSkuDetailVo(@PathVariable(value = "skuId")Long skuId) {
        SkuDetailVo skuDetailVo = skuBizService.findSkuDetailVo(skuId) ;
        return  Result.ok(skuDetailVo) ;
    }

    /**
     * 查询所有的skuId
     * @Author 薛有朋
     * @Date 2024/12/10 22:02
     **/
    @GetMapping(value = "/findAllSkuIds")
    public Result<List<Long>> findAllSkuIds(){
        List<Long> ids = skuBizService.findAllSkuIds();
        return Result.ok(ids);
    }
}
